import path from "path";
import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
import { VitePWA } from "vite-plugin-pwa";

export default defineConfig((env) => {
	const viteEnv = loadEnv(env.mode, process.cwd()) as unknown as ImportMetaEnv;

	return {
		base: "./",
		resolve: {
			alias: {
				"@": path.resolve(process.cwd(), "src"),
			},
		},
		plugins: [
			vue(),
			VitePWA({
				injectRegister: "auto",
				manifest: {
					name: "chatGPT",
					short_name: "chatGPT",
					icons: [
						{ src: "pwa-192x192.png", sizes: "192x192", type: "image/png" },
						{ src: "pwa-512x512.png", sizes: "512x512", type: "image/png" },
					],
				},
			}),
		],
		server: {
			host: "0.0.0.0",
			port: 5335,
			open: true,
			proxy: {
				"/api": {
					target: viteEnv.VITE_APP_API_BASE_URL,
					changeOrigin: true, // 允许跨域
					rewrite: (path) => path.replace("/api/", "/"),
				},
			},
		},
		build: {
			sourcemap: false, //是否构建source map 文件
			minify: "terser", // 混淆器，terser构建后文件体积更小
			terserOptions: {
				compress: {
					//生产环境时移除console
					drop_console: true,
					drop_debugger: true,
				},
			},
			rollupOptions: {
				// input: 'src/main.js', // 指定入口文件路径
				output: {
					format: "iife", // 指定输出格式为立即执行函数（Immediately Invoked Function Expression）
					inlineDynamicImports: true, // 将动态import转换为具体实现的代码，避免异步加载
				},
			},
			reportCompressedSize: false,
			commonjsOptions: {
				ignoreTryCatch: false,
			},
		},
	};
});
